<template>
  <div class="toast">
    <i :class="getClass"></i>
    <span>{{ toastMsg }}</span>
  </div>
  <!-- 
    success :  iconfont icon-toast_chenggong
    warning :  iconfont icon-toast-jinggao
    danger  :  iconfont icon-toast-shibai_huaban
   -->
</template>

<script>
import { mapState } from 'vuex';
export default {
  data() {
    return {};
  },
  computed: {
    ...mapState({
      toastMsg: (state) => state.showToast.toastMsg,
      toastType: (state) => state.showToast.toastType,
    }),
    getClass() {
      //根据类型返回不同的样式名
      if (this.toastType == 'success') {
        return 'iconfont icon-toast_chenggong';
      } else if (this.toastType == 'warning') {
        return 'iconfont icon-toast-jinggao';
      } else {
        return 'iconfont icon-toast-shibai_huaban';
      }
    },
  },
};

/* 
   面试题：
   你有封装过什么组件吗？ 能不能说下思路？ 
   1. 搭建基本样式结构 （图标，提示信息）
   2. 控制显示隐藏（将状态值存储到vuex中）
   3. 增加过渡效果 （transition组件）
   4. 提高提示狂灵活性 （将提示信息、图标类型 存储到了vuex中）
   5. 使用定时器实现自动关闭。
*/

</script>
 
<style lang="less" scoped>
.toast {
  position: fixed;
  padding: 10px 20px;
  display: flex;
  justify-content: center;
  align-items: center;
  background: #fff;
  left: 50%;
  top: 0;
  transform: translateX(-50%);
  border-radius: 10px;

  .iconfont {
    margin-right: 10px;
  }

  .icon-toast-shibai_huaban {
    color: red;
  }

  .icon-toast_chenggong {
    color: green;
  }

  .icon-toast-jinggao {
    color: orange;
  }
}
</style>



